package com.softeem.calendar;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 日历类
 *   对之前date类的补充和替换,date类中很多方法已经过时了
 *   public abstract class Calendar extends Object
 *      implements Serializable, Cloneable, Comparable<Calendar>
 *   方式一:通过静态方法来进行创建
 *      static Calendar getInstance();
 *   方式二:通过其子类进行创建
 *      GregorianCalendar
 *      Calendar c = new GregorianCalendar;
 */
public class Calendar_01 {
    public static void main(String[] args) {
        //方式1:
        Calendar c1 = Calendar.getInstance();
        //1、int get(int field)返回值指定字段的值
        int v1 = c1.get(Calendar.DAY_OF_YEAR);
        System.out.println(v1);//88
        int v2 = c1.get(Calendar.YEAR);
        System.out.println(v2);//2025
        int v3 = c1.get(Calendar.WEEK_OF_MONTH);
        System.out.println(v3);//5

        //2、abstract void add(int field, int amount)
        //  根据日历的规则，将指定的时间量添加或减去给定的日历字段。
        Calendar c2 = Calendar.getInstance();
        //比如你买了个酸奶,5天后过期,现在做一个日期提示
        c2.add(Calendar.DATE,5);
        System.out.println(c2);//输出日历对象不是我们想要的格式
        //Date getTime()
        //返回一个 Date表示此物体 Calendar的时间值（毫秒从偏移 Epoch “）。
        //将一个日历对象转换为date对象
        Date date = c2.getTime();
        System.out.println("date:" + date);//date:Thu Apr 03 16:18:16 CST 2025
        //可以使用日期时间的格式化来实现固定格式转换
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(date));//2025-04-03 16:19:26







        //方式2:
        //Calendar c2 = new GregorianCalendar();
    }
}
